package com.lhd.mappers;
import org.apache.ibatis.annotations.Param;

import java.util.List;

// P:PO
// Q:Query
interface BaseMapper<P, Q> {

    /**
     * selectList:(根据参数查询集合)
     */
    List<P> selectList(@Param("query") Q q);

    /**
     * selectCount:(根据集合查询数量)
     */
    Long selectCount(@Param("query") Q q);

    /**
     * insert:(插入)
     */
    Long insert(@Param("bean") P p);


    /**
     * insertOrUpdate:(插入或者更新)
     */
    Long insertOrUpdate(@Param("bean") P p);


    /**
     * insertBatch:(批量插入)
     */
    Long insertBatch(@Param("list") List<P> list);


    /**
     * insertOrUpdateBatch:(批量插入或更新)
     */
    Long insertOrUpdateBatch(@Param("list") List<P> list);


    /**
     * updateByQuery:(多条件更新)
     */
    Long updateByQuery(@Param("bean") P p, @Param("query") Q q);

    /**
     * deleteByQuery:(多条件删除)
     */
    Long deleteByQuery(@Param("query") Q q);
}
